﻿#pragma once
#include<iostream>
using namespace std;
#include<vector>

template<class T>
void Print_Vector(const vector<T>& v,size_t n)
{
	for (size_t i=0;i<n;++i)
	{
		cout << v[i] << " ";
	}
	cout << endl;
}

/*数组：二分查找-有序数组查找*/int Search(vector<int>& nums, int target);
/*数组：双指针(前后)-元素删除*/int removeElement(vector<int>& nums, int val);

/*数组：双指针(左右)-非递减数组生成非递减平方数组*/vector<int> sortedSquares(vector<int>& nums);
/*数组：滑动窗口-非负数组计算和>=aim的最短子串长度*/int minSubArrayLen(int aim, vector<int>& nums);
/*数组：螺旋矩阵（非算法题）*/vector<vector<int>> generateMatrix(int n);

/*数组：预处理思想-计算数组子串和(非力扣)*/void calcue_subarr_sum(int n);
/*数组：预处理思想-计算二维数组二分后子集和的最小差值(非力扣)*/void find_the_mindef_plan();

/*数组：二分查找-有序数组查找，无则返回应插入位置索引*/int searchInsert(vector<int>& nums, int target);

/*数组：二分查找-查找非递减数组目标值最左边界*/int findleftRange(vector<int>& nums, int target);
/*数组：二分查找-查找非递减数组目标值最右边界*/int findrightRange(vector<int>& nums, int target);
/*数组：二分查找-查找非递减数组目标值最左或最右边界*/int findBoundary(vector<int>& nums, int target, bool isLeft);
/*数组：二分查找-查找非递减数组目标值最左和最右边界*/vector<int> searchRange(vector<int>& nums, int target);
/*数组：二分查找-判断一个数是否是完全平方数*/bool isPerfectSquare(int num);



